A storage management server (or simply, a “storage server”) is a special purpose processing system used to store and retrieve data on behalf of one or more clients on a network. The storage server operates on behalf of one or more storage clients to store and manage data in a set of mass storage devices, such as magnetic or optical storage-based disks or tapes. The mass storage devices can be organized into one or more groups of disks (e.g., redundant array of inexpensive disks (RAID)).
FIG. 1 depicts an example of a storage system. As depicted here, a storage server can include multiple modules. The storage server 101 includes a network module 105, a data module 110, a management module 115, and a database module 120.
The network module 105 provides an interface to one or more storage clients (e.g., 125, 130). The network module 105 receives data access requests from the storage clients (e.g., read and write requests) and transmits those requests to one or more storage media (e.g., 140, 145). The network module 105 also transmits the response from the storage media to the storage clients. The network module 105, in some instances, utilizes a network 135 to enable communication between the storage clients and the storage media. The network module 105 can include functionality for translating between one or more protocols used by the storage clients and an internal protocol used by the storage server 101. Functions of the network module 105, which can include functions not mentioned here, are referred to collectively and individually as “network module functionality.”
The data module 110 provides an interface to the storage media. The data module 110 can also control data layout on the storage media and respond to client-initiated read and write requests. The data module 110 can include other functionality, such as creating a backup, a mirror image or a snapshot of stored data. In some instances, the data module 110 communicates with the network module 105 to enable the storage clients to interface with the storage media. Functions of the data module 110, which can include functions not mentioned here, are referred to collectively and individually as “data module functionality.”
The management module 115 provides an interface to a storage administrator to the various management and administrative functions of the storage server 101. The storage administrator can control various operations of the storage server 101 through the management module 115. Functions of the management module 115, which can include functions not mentioned here, are referred to collectively and individually as “management module functionality.”
The database module 120 provides an interface to configuration information maintained of the storage server 101. The configuration information, for example, includes details on usage levels of the various storage media (e.g., 140, 145) connected to the storage server. In another example, the configuration information includes details about the various storage clients (e.g., 125, 130) connected to the storage server. Functions of the database module 120, which can include functions not mentioned here, are referred to collectively and individually as “database module functionality.”
In addition to these core functionalities (e.g., management module functionality, data module functionality, etc.) provided by the storage server 101, in some instances, the storage system includes additional services or applications (e.g., antivirus services, security services, etc.) to add value and enhance the usability of the storage server 101. In some instances, these additional services or applications (hereinafter, “applications” or “third-party applications”) are offered by third-party providers, i.e., providers other than the manufacturer of the storage server. Examples of such applications include security management applications, antivirus applications, third-party storage management applications, etc.
In conventional storage systems, these applications are offered by running the applications (e.g., 155, 165) on one or more “external” computers (e.g., 150, 160). The term “external,” as used herein, indicates that the computers running the applications are not part of the storage server 101. The external computers do not share or utilize hardware resources of the storage server 101. The external computers, in some instances, communicate with the storage server 101 through the network 135.
Various problems are associated with running the applications on external computers. For example, in some instances, the applications access the various modules of the storage server 101 to collect information about, for example, the usage statistics of the storage media. Because the applications are on external computers, they interface with the storage server 101 through the network 135. This introduces latency during the operation of the applications.
In another example, the overall cost of the storage system is higher owing to the use of external computers to run the applications. In some instances, the storage administrator has to set up separate interfaces for each of the applications, in order to enable them to communicate with the storage server 101. This further increases the overhead cost and operational expenses incurred in maintaining the external computers.
In another example, in addition to monitoring and controlling the functionality of the storage server 101 through the management module 115, the storage administrator has to access each external computer to manage the various applications. This further increases the operational overhead involved in maintaining the storage system.